#ifndef _QUEUE_H_
#define _QUEUE_H_

#include <string.h>
struct Queue
{
	int currentSize;
	int capacity;
	int front;
	int back;
	void* data;
	void* (*_cpData)(void*, const void*);
	void* (*_getElePointer)(void* _array, int step);
	void (*_printEle)(void*);
	int (*_dataSize)();
};

struct Queue* createQueue(int capacity,
						  void* (*_cpData)(void*, const void*),
						  void* (*_getElePointer)(void* _array, int step),
						  void (*_printEle)(void*),
						  int (*_dataSize)());

void deleteQueue(struct Queue* _queue);
void clearQueue(struct Queue* _queue);
int pushEle(struct Queue* _queue, void* _el);
int popEle(void* _dst, struct Queue* _queue);
void printQueueInfo(struct Queue* _queue);





#endif
